/**
 * EduVerse Credentials - 数据清理脚本
 * 
 * 此脚本用于清除服务器端的数据，便于重新测试。
 * 它会保留必要的目录结构，但会删除已创建的凭证、DID和其他数据。
 */

const fs = require('fs');
const path = require('path');

// 定义数据目录
const DATA_ROOT = path.join(__dirname, '..', 'data');
const ISSUER_DATA_DIR = path.join(DATA_ROOT, 'issuer');
const WALLET_DATA_DIR = path.join(DATA_ROOT, 'wallet');
const VERIFIER_DATA_DIR = path.join(DATA_ROOT, 'verifier');
const STATUS_LISTS_DIR = path.join(DATA_ROOT, 'status-lists');

// 确保所有目录存在
function ensureDirectoryExists(dir) {
  if (!fs.existsSync(dir)) {
    fs.mkdirSync(dir, { recursive: true });
    console.log(`创建目录: ${dir}`);
  }
}

// 清除目录中的所有文件，但保留目录
function clearDirectory(dir) {
  if (fs.existsSync(dir)) {
    const files = fs.readdirSync(dir);
    for (const file of files) {
      const filePath = path.join(dir, file);
      if (fs.lstatSync(filePath).isDirectory()) {
        clearDirectory(filePath);
      } else {
        // 保留示例凭证数据文件和机构数据
        if (file.endsWith('-credentials.json') || file === 'sample-credentials.json' || file === 'institutions.json') {
          console.log(`保留示例数据文件: ${filePath}`);
          continue;
        }
        fs.unlinkSync(filePath);
        console.log(`删除文件: ${filePath}`);
      }
    }
  } else {
    ensureDirectoryExists(dir);
  }
}

console.log('===== 开始清理EduVerse Credentials数据 =====');

// 确保所有数据目录存在
ensureDirectoryExists(DATA_ROOT);
ensureDirectoryExists(ISSUER_DATA_DIR);
ensureDirectoryExists(WALLET_DATA_DIR);
ensureDirectoryExists(VERIFIER_DATA_DIR);
ensureDirectoryExists(STATUS_LISTS_DIR);

// 清理各个目录
console.log('\n清理发行方数据...');
clearDirectory(ISSUER_DATA_DIR);

console.log('\n清理钱包数据...');
clearDirectory(WALLET_DATA_DIR);

console.log('\n清理验证方数据...');
clearDirectory(VERIFIER_DATA_DIR);

console.log('\n清理状态列表数据...');
clearDirectory(STATUS_LISTS_DIR);

console.log('\n===== 数据清理完成 =====');
console.log('现在可以重新启动服务器进行测试'); 